﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using HienThi;

namespace GUI
{
    public partial class Form_NhapHang : UserControl
    {
        public Form_NhapHang()
        {
            InitializeComponent();
        }
        NhapHangBUS bus = new NhapHangBUS();
        private void Form_NhapHang_Load(object sender, EventArgs e)
        {
            List<DonDatHang> cbb1 = bus.LayBangDDH();
            List<string> cbb3 = bus.LayNgayNhapHang();
            if (cbb3.Count != 0)
            {
                cbbTim_NgayNhapHang.Properties.DataSource = cbb3;
                cbbTim_NgayNhapHang.ItemIndex = 0;
                string[] ngaynh_maddh = cbb3[0].Split('_');
                string[] ngaynhap = ngaynh_maddh[0].Split('/');
                string maddh = ngaynh_maddh[1];
                List<string> cbb4 = new List<string>();
                cbb4 = bus.LayMaNH_Tim(ngaynhap, maddh);
                cbbTim_MaNH.Properties.DataSource = cbb4;
                cbbTim_MaNH.ItemIndex = 0;
                btnTim_NhapHang.Enabled = true;
            }
            if (cbb1.Count == 0)
            {
                MessageBox.Show("Không tìm thấy đơn hàng thỏa yêu cầu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                cbbNgayDatHang.Properties.DataSource = cbb1;
                cbbNgayDatHang.ItemIndex = 0;
                List<NhapHangHienThi> grd = bus.LayBangNhapHangHienThi(cbbNgayDatHang.EditValue.ToString());
                grdcontrolNhapHang.DataSource = grd;
                List<NhanVien> cbb2 = bus.LayBangNhanVien();
                cbbNhanVien.Properties.DataSource = cbb2;
                cbbNhanVien.ItemIndex = 0;
            }
        }

        private void cbbTim_NgayNhapHang_EditValueChanged(object sender, EventArgs e)
        {
            string[] ngaynh_maddh = cbbTim_NgayNhapHang.EditValue.ToString().Split('_');
            string[] ngaynhap = ngaynh_maddh[0].Split('/');
            string maddh = ngaynh_maddh[1];
            List<string> cbb = bus.LayMaNH_Tim(ngaynhap, maddh);
            cbbTim_MaNH.Properties.DataSource = cbb;
            cbbTim_MaNH.ItemIndex = 0;
        }

        private void cbbNgayDatHang_EditValueChanged(object sender, EventArgs e)
        {
            string maddh = cbbNgayDatHang.EditValue.ToString();
            List<NhapHangHienThi> grd = bus.LayBangNhapHangHienThi(maddh);
            grdcontrolNhapHang.DataSource = grd;
            btnNhapHang.Enabled = true;
            btnCapNhat.Enabled = false;
        }

        private void btnNhapHang_Click(object sender, EventArgs e)
        {
            string manv = cbbNhanVien.EditValue.ToString();
            string maddh = cbbNgayDatHang.EditValue.ToString();
            string ngaynhap = DateTime.Now.Month.ToString() + "/" + DateTime.Now.Day.ToString() + "/" + DateTime.Now.Year.ToString();
            string lannhap = bus.LayLanNhap(maddh);
            bool ktnhap = false;
            bool ktupdate = true;
            for (int i = 0; i < grdviewNhapHang.RowCount; i++)
            {
                if (int.Parse(grdviewNhapHang.GetRowCellValue(i, grdclSLNhan).ToString()) != 0)
                    ktnhap = true;
            }
            if (ktnhap == false)
            {
                MessageBox.Show("Chưa nhập số lượng đã nhận!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (lannhap == "")
            {
                bus.InsertNhapHang(maddh, ngaynhap, manv, 1);
                string manh = bus.LayMaNH(maddh);
                for (int i = 0; i < grdviewNhapHang.RowCount; i++)
                {
                    string masp = grdviewNhapHang.GetRowCellValue(i, grdclMaSP).ToString();
                    string slnhan = grdviewNhapHang.GetRowCellValue(i, grdclSLNhan).ToString();
                    string slconlai = grdviewNhapHang.GetRowCellValue(i, grdclSLConLai).ToString();
                    bus.InsertChiTietNH(manh, masp, slnhan, slconlai);
                    if (int.Parse(slconlai) != 0)
                        ktupdate = false;

                }
            }
            else
            {
                bus.InsertNhapHang(maddh, ngaynhap, manv, int.Parse(lannhap) + 1);
                string manh = bus.LayMaNH(maddh);
                for (int i = 0; i < grdviewNhapHang.RowCount; i++)
                {
                    string masp = grdviewNhapHang.GetRowCellValue(i, grdclMaSP).ToString();
                    string slnhan = grdviewNhapHang.GetRowCellValue(i, grdclSLNhan).ToString();
                    string slconlai = grdviewNhapHang.GetRowCellValue(i, grdclSLConLai).ToString();
                    bus.InsertChiTietNH(manh, masp, slnhan, slconlai);
                    if (int.Parse(slconlai) != 0)
                        ktupdate = false;
                }
            }
            if (ktupdate == true)
                bus.UpdateDonDatHang(maddh, "1");
            MessageBox.Show("Nhập hàng thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            Form_NhapHang_Load(sender, e);
        }

        private void btnTim_NhapHang_Click(object sender, EventArgs e)
        {
            string manh = cbbTim_MaNH.EditValue.ToString();
            List<NhapHangHienThi> grdcontrol = bus.LayBangNhapHangHienThi_Tim(manh);
            grdcontrolNhapHang.DataSource = grdcontrol;
            btnCapNhat.Enabled = true;
            btnNhapHang.Enabled = false;
        }

        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            string[] ngaynh_maddh = cbbTim_NgayNhapHang.EditValue.ToString().Split('_');
            string[] ngaynhap = ngaynh_maddh[0].Split('/');
            string maddh = ngaynh_maddh[1];
            List<string> ls_manh = bus.LayMaNH_Tim(ngaynhap, maddh);
            string manh = ls_manh[ls_manh.Count - 1];
            bool ktupdate = true;
            if (bus.KiemTraTinhTrangDDH(maddh) == true)
            {
                MessageBox.Show("Đơn hàng này đã được giao đủ, xin chọn đơn đặt hàng khác!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                if (manh == cbbTim_MaNH.EditValue.ToString())
                {
                    for (int i = 0; i < grdviewNhapHang.RowCount; i++)
                    {
                        string masp = grdviewNhapHang.GetRowCellValue(i, grdclMaSP).ToString();
                        int slnhan = int.Parse(grdviewNhapHang.GetRowCellValue(i, grdclSLNhan).ToString());
                        int slconlai = int.Parse(grdviewNhapHang.GetRowCellValue(i, grdclSLConLai).ToString());
                        bus.UpdateChiTietNH(manh, masp, slnhan, slconlai);
                        if (slconlai != 0)
                            ktupdate = false;
                    }
                    MessageBox.Show("Cập nhật thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("Lần nhập hàng này đã được xác nhận, xin chọn lần nhập hàng khác!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                if (ktupdate == true)
                    bus.UpdateDonDatHang(maddh, "1");
                btnTim_NhapHang_Click(sender, e);
            }
        }

        private void grdviewNhapHang_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            //kiểm tra ô bị thay đổi giá trị có phải ô thuộc cột "SLNhan" không?
            if (e.Column.FieldName == "SLNhan")
            {
                //Lấy chỉ số dòng của ô đang bị thay đổi giá trị
                int dong = e.RowHandle;

                // lấy giá trị của ô (chỉ số dòng, tên cột)
                int sldat = int.Parse(grdviewNhapHang.GetRowCellValue(dong, grdclSoLuong).ToString());
                int slnhan = int.Parse(grdviewNhapHang.GetRowCellValue(dong, grdclSLNhan).ToString());
                if (slnhan > sldat)
                {
                    grdviewNhapHang.SetRowCellValue(dong, grdclSLNhan, sldat.ToString());
                    return;
                }
                int slconlai = sldat - slnhan;

                //thay đổi giá trị ở ô(chỉ số dòng, tên cột, "chuỗi" giá trị)
                grdviewNhapHang.SetRowCellValue(dong, "SLConLai", slconlai.ToString());
            }
        }

        private void btnXoaNhapHang_Click(object sender, EventArgs e)
        {

        }

        private void btnXoaTrang_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < grdviewNhapHang.RowCount; i++)
            {
                grdviewNhapHang.SetRowCellValue(i, grdclSLNhan, "0");
            }
        }

    }
}
